import jwt from 'jsonwebtoken'
import {jwtConfig} from '../config/jwt.js'

// JWT 认证中间件
export function authenticateToken(req, res, next) {
  const authHeader = req.headers['authorization']
  const token = authHeader && authHeader.split(' ')[1] // Bearer TOKEN

  if (!token) {
    return res.status(401).json({
      success: false,
      error: '未提供认证令牌'
    })
  }

  jwt.verify(token, jwtConfig.secret, (err, user) => {
    if (err) {
      return res.status(403).json({
        success: false,
        error: '令牌无效或已过期'
      })
    }

    req.user = user
    next()
  })
}

// 可选的认证中间件（不强制要求登录）
export function optionalAuth(req, res, next) {
  const authHeader = req.headers['authorization']
  const token = authHeader && authHeader.split(' ')[1]

  if (token) {
    jwt.verify(token, jwtConfig.secret, (err, user) => {
      if (!err) {
        req.user = user
      }
    })
  }

  next()
}
